#include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
using namespace std;
const int N=10000005;
int l,p,n;
int a[N];
int b[N];
int main(void){
    scanf("%d",&n);
    for(int i=n-1;i>=0;i--){
        scanf("%d%d",&a[i],&b[i]);
    }
    scanf("%d%d",&l,&p);
    for(int i=0;i<n;i++){
        a[i]=l-a[i];
    }
    //把终点也看成加油站
    a[n]=l;
    b[n]=0;
    n++;
    priority_queue<int> q;
    //加油次数 当前位置 油箱油量
    int ans=0,pos=0,tank=p;
    for(int i=0;i<n;i++){
        //要走的距离
        int d=a[i]-pos;
        //需要加油
        while(tank-d<0){
            if(q.empty()){
                puts("-1");
                return 0;
            }
            tank+=q.top();
            q.pop();
            ans++;
        }
        tank-=d;
        //到下一个地点
        pos=a[i];
        //加入沿途的加油站
        q.push(b[i]);
    }
    printf("%d\n",ans);
    return 0;
}